import defaultConfig from "@/config";
// 页面白名单，不受拦截
const whiteList = defaultConfig.notLoginPage

/**
 * 注意：拦截uni.switchTab本身没有问题。但是在微信小程序端点击tabbar的底层逻辑并不是触发uni.switchTab。
 * 所以误认为拦截无效，此类场景的解决方案是在tabbar页面的页面生命周期onShow中处理。
 */
function hasPermission(urlAddress : string) {
	console.log(urlAddress, 'loginInterceptors')
	//取出url中的参数
	let urls = urlAddress.split('?')
	let url = urls[0]
	//isLogin是登录成功后在本地存储登录标识，存储一个能够判断用户登录的唯一标识就行，根据自己存储的数据类型来判断
	let data = uni.getStorageSync(defaultConfig.loginKey);
	console.log(data, 'dddd')
	let islogin = false;
	if (data) {
		let res = JSON.parse(data)
		islogin = res.user && res.user.id ? true : false;
	}
	islogin = Boolean(Number(islogin));//返回布尔值
	// 在白名单中或有登录判断条件可以直接跳转
	if (whiteList.indexOf(url) !== -1 || islogin) {
		console.log('跳转的页面在白名单内或是已登录')
		return true
	}
	console.log('跳转的页面不在白名单内且未登录')
	return false
}
// uni.addInterceptor('navigateTo', {
// 	// 页面跳转前进行拦截, invoke根据返回值进行判断是否继续执行跳转
// 	invoke(e) {
// 		// if (!hasPermission(e.url)) {
// 		// 	uni.setStorageSync(defaultConfig.loginBeforePages, e.url)
// 		// 	uni.reLaunch({
// 		// 		url: '/pages/login/bind-mobile'
// 		// 	})
// 		// 	return false
// 		// }
// 		return true
// 	},
// 	success(e) {

// 	}
// })

// uni.addInterceptor('switchTab', {
// 	// tabbar页面跳转前进行拦截
// 	invoke(e) {
// 		console.log(e, '222222')
// 		if (!hasPermission(e.url)) {
// 			uni.setStorageSync(defaultConfig.loginBeforePages, e.url)
// 			uni.reLaunch({
// 				url: '/pages/login/bind-mobile'
// 			})
// 			console.log('跳转的页面在白名单内或是已登录')
// 			return false
// 		}
// 		console.log('跳转的页面不在白名单内且未登录')
// 		return true
// 	},
// 	success(e) {

// 	}
// })